/**
* \file NetworkPlugin.h
* \brief NetworkPlugin decleration class
* \author Edouard ROGE
* \date 29 Octobre 2013
*/
#ifndef _NETWORKPLUGIN_
#define _NETWORKPLUGIN_

#include "Core/Plugin/IPlugin.h"

namespace Core
{
	namespace Network
	{
		class INetworkContext;

		class INetworkPlugin : public Core::Plugin::IPlugin
		{
		public:

			/**
			* \fn virtual NetworkContext * CreateContext() const = 0;
			* \return a newly created network context
			* \brief Create a network context
			*/
			virtual INetworkContext * CreateContext() const = 0;

			/**
			* \fn virtual void DestroyContext(NetworkContext * _pRenderContext) const = 0;
			* \param _pContext Network context to destroy
			* \brief Destroy the context in parameter, created before by this plugin
			*/
			virtual void DestroyContext(INetworkContext * _pContext) const = 0;
		};
	}
}

#endif // _NETWORKPLUGIN_
